package com.ruoyi.platform.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 营销活动对象 marketing_activity
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public class MarketingActivity extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 活动ID */
    private String activityId;

    /** 活动编码（唯一） */
    @Excel(name = "活动编码")
    private String activityCode;

    /** 活动名称 */
    @Excel(name = "活动名称")
    private String activityName;

    /** 活动类型：1-满减活动，2-折扣活动，3-特价活动，4-新用户活动 */
    @Excel(name = "活动类型", readConverterExp = "1=满减活动,2=折扣活动,3=特价活动,4=新用户活动")
    private Integer activityType;

    /** 商家ID */
    @Excel(name = "商家ID")
    private String merchantId;

    /** 商家名称 */
    @Excel(name = "商家名称")
    private String merchantName;

    /** 活动开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "活动开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /** 活动结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "活动结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /** 预算总额 */
    @Excel(name = "预算总额")
    private BigDecimal budgetTotal;

    /** 已使用预算 */
    @Excel(name = "已使用预算")
    private BigDecimal budgetUsed;

    /** 剩余预算 */
    @Excel(name = "剩余预算")
    private BigDecimal budgetRemaining;

    /** 优惠金额（满减活动使用） */
    @Excel(name = "优惠金额")
    private BigDecimal discountAmount;

    /** 折扣率（折扣活动使用，如0.8表示8折） */
    @Excel(name = "折扣率")
    private BigDecimal discountRate;

    /** 最低订单金额 */
    @Excel(name = "最低订单金额")
    private BigDecimal minOrderAmount;

    /** 最高优惠金额 */
    @Excel(name = "最高优惠金额")
    private BigDecimal maxDiscountAmount;

    /** 参与用户限制：1-全部用户，2-新用户，3-指定用户 */
    @Excel(name = "参与用户限制", readConverterExp = "1=全部用户,2=新用户,3=指定用户")
    private Integer userLimit;

    /** 每用户参与次数限制 */
    @Excel(name = "每用户参与次数限制")
    private Integer perUserLimit;

    /** 适用范围：1-全部商品，2-指定商品，3-指定分类 */
    @Excel(name = "适用范围", readConverterExp = "1=全部商品,2=指定商品,3=指定分类")
    private Integer applicableScope;

    /** 范围ID列表（商品ID或分类ID） */
    @Excel(name = "范围ID列表")
    private String scopeIds;

    /** 活动描述 */
    @Excel(name = "活动描述")
    private String description;

    /** 活动规则 */
    @Excel(name = "活动规则")
    private String rules;

    /** 状态：0-待审核，1-审核通过，2-审核拒绝，3-已发布，4-已暂停，5-已结束 */
    @Excel(name = "状态", readConverterExp = "0=待审核,1=审核通过,2=审核拒绝,3=已发布,4=已暂停,5=已结束")
    private Integer status;

    /** 审核状态：0-待审核，1-审核通过，2-审核拒绝 */
    @Excel(name = "审核状态", readConverterExp = "0=待审核,1=审核通过,2=审核拒绝")
    private Integer auditStatus;

    /** 审核人ID */
    @Excel(name = "审核人ID")
    private Long auditBy;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date auditAt;

    /** 审核备注 */
    @Excel(name = "审核备注")
    private String auditRemark;

    /** 拒绝原因 */
    @Excel(name = "拒绝原因")
    private String rejectReason;

    /** 参与订单数 */
    @Excel(name = "参与订单数")
    private Integer orderCount;

    /** 参与用户数 */
    @Excel(name = "参与用户数")
    private Integer userCount;

    /** 删除时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date deletedAt;

    public void setActivityId(String activityId) 
    {
        this.activityId = activityId;
    }

    public String getActivityId() 
    {
        return activityId;
    }
    public void setActivityCode(String activityCode) 
    {
        this.activityCode = activityCode;
    }

    public String getActivityCode() 
    {
        return activityCode;
    }
    public void setActivityName(String activityName) 
    {
        this.activityName = activityName;
    }

    public String getActivityName() 
    {
        return activityName;
    }
    public void setActivityType(Integer activityType) 
    {
        this.activityType = activityType;
    }

    public Integer getActivityType() 
    {
        return activityType;
    }
    public void setMerchantId(String merchantId) 
    {
        this.merchantId = merchantId;
    }

    public String getMerchantId() 
    {
        return merchantId;
    }
    public void setMerchantName(String merchantName) 
    {
        this.merchantName = merchantName;
    }

    public String getMerchantName() 
    {
        return merchantName;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setBudgetTotal(BigDecimal budgetTotal) 
    {
        this.budgetTotal = budgetTotal;
    }

    public BigDecimal getBudgetTotal() 
    {
        return budgetTotal;
    }
    public void setBudgetUsed(BigDecimal budgetUsed) 
    {
        this.budgetUsed = budgetUsed;
    }

    public BigDecimal getBudgetUsed() 
    {
        return budgetUsed;
    }
    public void setBudgetRemaining(BigDecimal budgetRemaining) 
    {
        this.budgetRemaining = budgetRemaining;
    }

    public BigDecimal getBudgetRemaining() 
    {
        return budgetRemaining;
    }
    public void setDiscountAmount(BigDecimal discountAmount) 
    {
        this.discountAmount = discountAmount;
    }

    public BigDecimal getDiscountAmount() 
    {
        return discountAmount;
    }
    public void setDiscountRate(BigDecimal discountRate) 
    {
        this.discountRate = discountRate;
    }

    public BigDecimal getDiscountRate() 
    {
        return discountRate;
    }
    public void setMinOrderAmount(BigDecimal minOrderAmount) 
    {
        this.minOrderAmount = minOrderAmount;
    }

    public BigDecimal getMinOrderAmount() 
    {
        return minOrderAmount;
    }
    public void setMaxDiscountAmount(BigDecimal maxDiscountAmount) 
    {
        this.maxDiscountAmount = maxDiscountAmount;
    }

    public BigDecimal getMaxDiscountAmount() 
    {
        return maxDiscountAmount;
    }
    public void setUserLimit(Integer userLimit) 
    {
        this.userLimit = userLimit;
    }

    public Integer getUserLimit() 
    {
        return userLimit;
    }
    public void setPerUserLimit(Integer perUserLimit) 
    {
        this.perUserLimit = perUserLimit;
    }

    public Integer getPerUserLimit() 
    {
        return perUserLimit;
    }
    public void setApplicableScope(Integer applicableScope) 
    {
        this.applicableScope = applicableScope;
    }

    public Integer getApplicableScope() 
    {
        return applicableScope;
    }
    public void setScopeIds(String scopeIds) 
    {
        this.scopeIds = scopeIds;
    }

    public String getScopeIds() 
    {
        return scopeIds;
    }
    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }
    public void setRules(String rules) 
    {
        this.rules = rules;
    }

    public String getRules() 
    {
        return rules;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }
    public void setAuditStatus(Integer auditStatus) 
    {
        this.auditStatus = auditStatus;
    }

    public Integer getAuditStatus() 
    {
        return auditStatus;
    }
    public void setAuditBy(Long auditBy) 
    {
        this.auditBy = auditBy;
    }

    public Long getAuditBy() 
    {
        return auditBy;
    }
    public void setAuditAt(Date auditAt) 
    {
        this.auditAt = auditAt;
    }

    public Date getAuditAt() 
    {
        return auditAt;
    }
    public void setAuditRemark(String auditRemark) 
    {
        this.auditRemark = auditRemark;
    }

    public String getAuditRemark() 
    {
        return auditRemark;
    }
    public void setRejectReason(String rejectReason) 
    {
        this.rejectReason = rejectReason;
    }

    public String getRejectReason() 
    {
        return rejectReason;
    }
    public void setOrderCount(Integer orderCount) 
    {
        this.orderCount = orderCount;
    }

    public Integer getOrderCount() 
    {
        return orderCount;
    }
    public void setUserCount(Integer userCount) 
    {
        this.userCount = userCount;
    }

    public Integer getUserCount() 
    {
        return userCount;
    }
    public void setDeletedAt(Date deletedAt) 
    {
        this.deletedAt = deletedAt;
    }

    public Date getDeletedAt() 
    {
        return deletedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("activityId", getActivityId())
            .append("activityCode", getActivityCode())
            .append("activityName", getActivityName())
            .append("activityType", getActivityType())
            .append("merchantId", getMerchantId())
            .append("merchantName", getMerchantName())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("budgetTotal", getBudgetTotal())
            .append("budgetUsed", getBudgetUsed())
            .append("budgetRemaining", getBudgetRemaining())
            .append("discountAmount", getDiscountAmount())
            .append("discountRate", getDiscountRate())
            .append("minOrderAmount", getMinOrderAmount())
            .append("maxDiscountAmount", getMaxDiscountAmount())
            .append("userLimit", getUserLimit())
            .append("perUserLimit", getPerUserLimit())
            .append("applicableScope", getApplicableScope())
            .append("scopeIds", getScopeIds())
            .append("description", getDescription())
            .append("rules", getRules())
            .append("status", getStatus())
            .append("auditStatus", getAuditStatus())
            .append("auditBy", getAuditBy())
            .append("auditAt", getAuditAt())
            .append("auditRemark", getAuditRemark())
            .append("rejectReason", getRejectReason())
            .append("orderCount", getOrderCount())
            .append("userCount", getUserCount())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("deletedAt", getDeletedAt())
            .toString();
    }
}